坚持
  • 微信
当前位置:首页 > PYTHON >

11

作者:管理员 时间:2026-07-03 阅读数: 638人阅读

十四、os和os.path模块

os模块可以帮助我们直接对操作系统进行操作。可以直接调用操作系统的可执行文件、命令,直接操作文件、目录等。是做系统运维非常重要的基础。

 

  os.system调用操作系统命令

示例:os.system调用windows系统的记事本程序

 

import os

os.system("notepad.exe")

 

示例:os.system调用windows系统中ping命令

 

import os

os.system("ping www.baidu.com")

 

示例:os.startfile直接调用可执行文件

 

import os

os.startfile(r"C:\Program Files (x86)\Tencent\WeChat\WeChat.exe")

 

 

  os模块-文件和目录操作

方法名

描述

remove(path)

删除指定的文件

rename(src, dest)

重命名文件或目录

stat(path)

返回文件的所有属性

listdir(path)

返回path目录下的文件和目录列表

mkdir(path)

创建目录

makedirs(path1/path2/...)

创建多级目录

rmdir(path)

删除目录

removedirs(path1/path2...)

删除多级目录

getcwd()

返回当前工作目录

chdir(path)

path设为当前工作目录

walk()

遍历目录树

sep

当前操作系统所使用的路径分隔符

 

示例:os模块创建、删除目录、获取文件信息等

 

#测试os模块中,关于文件和目录的操作

import os

 

#打印基本的信息

print(os.name)          #windows-->nt  linux-->posix

print(os.sep)           #windows-->\\  linux-->/

print(repr(os.linesep)) #windows-->\r\n  linux-->\n

 

#获取文件和文件夹的相关信息

print(os.stat("my01.py"))

 

#关于工作目录的操作

print(os.getcwd())      #获得当前工作目录

os.chdir("d:")          #当前的工作目录就变成了d:的根目录

 

#创建目录、删除目录

#os.mkdir("书籍")

#os.rmdir("书籍")

 

#创建多级目录

#os.makedirs("电影/港台/周星驰")

#os.rename("电影", "movie")

 

dirs = os.listdir("movie")

print(dirs)

 

 

  os.path模块

os.path模块提供了目录相关(路径判断、路径切分、路径连接、文件夹遍历)的操作。

方法

描述

isabs(path)

判断path是否绝 对路径

isdir(path)

判断path是否为目录

isfile(path)

判断path是否为文件

exists(path)

判断指定路径的文件是否存在

getsize(filename)

返回文件的大小

abspath(path)

返回绝 对路径

dirname(p)

返回目录的路径

getatime(filename)

返回文件的最后访问时间

getmtime(filename)

返回文件的最后修改时间

walk(top,func,arg)

递归方式遍历目录

join(path,*paths)

连接多个path

split(path)

对路径进行分割,以列表形式返回

splitext(path)

从路径中分割文件的扩展名

 

示例:测试os.path中常用方法

 

#测试os.path常用方法

import os

import os.path

 

#获得目录、文件基本信息

print(os.path.isabs("d:/a.txt"))    #是否绝 对路径

print(os.path.isdir("d:/a.txt"))    #是否目录

print(os.path.isfile("d:/a.txt"))   #是否文件

print(os.path.exists("a.txt"))      #文件是否存在

print(os.path.getsize("a.txt"))     #文件大小

print(os.path.abspath("a.txt"))     #输出绝 对路径

print(os.path.dirname("d:/a.txt"))  #输出所在目录

 

#获得创建时间、访问时间、最后修改时间

print(os.path.getctime("a.txt"))    #返回创建时间

print(os.path.getatime("a.txt"))    #返回最后访问时间

print(os.path.getmtime("a.txt"))    #返回最后修改时间

 

#对路径进行分割、连接操作

path = os.path.abspath("a.txt")

print(os.path.split(path))          #返回元组:目录、文件

print(os.path.splitext(path))       #返回元组:路径、扩展名

print(os.path.join("aa", "bb", "cc")) #返回路径:aa/bb/cc

 

示例:列出指定目录下所有的.py文件,并输出文件名

 

#列出指定目录下所有的.py文件,并输出文件名

import os

import os.path

 

path = os.getcwd()

file_list = os.listdir(path)   #列出子目录和子文件

for filename in file_list:

    pos = filename.rfind(".")

    if filename[pos+1:] == "py":

        print(filename, end="\t")

 

print("##################")

file_list2 = [filename for filename in os.listdir(path) if filename.endswith(".py")]

for filename in file_list2:

print(filename, end="\t")

 

 

  os.walk()递归遍历所有文件和目录

os.walk()方法是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。格式:os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

返回三元组(root, dirs, files):root是当前正在遍历的文件夹本身;dirs是该文件夹中所有的目录的名字列表;files是该文件夹中所有的文件的名字列表。

示例:使用walk()递归遍历所有文件和目录

 

import os

 

path = os.getcwd()

list_files = os.walk(path, topdown=False)

 

for root, dirs, files in list_files:

    for name in files:

        print(os.path.join(root, name))

    for name in dirs:

        print(os.path.join(root, name))

 

  十五、shutil模块(拷贝和压缩)

shutil模块是Python标准库中提供的,主要用来做文件和文件夹的拷贝、移动、删除等;还可以做文件和文件夹的压缩、解压缩操作。os模块提供了对目录或文件的一般操作,shutil模块作为补充,提供了移动、复制、压缩、解压等操作。

示例:实现文件的拷贝

 

import shutil

#copy文件内容

shutil.copyfile("a.txt", "a_copy.txt")

 

示例:实现递归的拷贝文件夹内容

 

import shutil

#"音乐"文件夹不存在才能用

shutil.copytree("电影/学习", "音乐", ignore=shutil.ignore_patterns("*.html", "*.htm"))

 

示例:实现将文件夹所有内容压缩

 

import shutil

import zipfile

 

#将"电影/学习"文件夹下所有内容压缩到"音乐2"文件夹下生成movie.zip

#shutil.make_archive("音乐2/movie", "zip", "电影/学习")

 

#压缩:将指定的多个文件压缩到一个zip文件

#z = zipfile.ZipFile("a.zip", "w")

#z.write("1.txt")

#z.write("2.txt")

#z.close()

 

示例:实现将压缩包解压缩到指定文件夹

 

import shutil

import zipfile

 

#解压缩

z2 = zipfile.ZipFile("a.zip", "r")

z2.extractall("d:/")   #设置解压的地址

z2.close()

 

 

  十六、递归遍历目录下所有文件

示例:使用递归算法遍历目录下所有文件

 

import os

import os.path

 

#递归遍历目录树

def my_print_file(path, level):

    child_files = os.listdir(path)

    for file in child_files:

        file_path = os.path.join(path, file)

        print("\t" * level + file_path[file_path.rfind(os.sep)+1:])

        if os.path.isdir(file_path):

            my_print_file(file_path, level + 1)

 

my_print_file("电影", 0)

 


上一篇:

下一篇: